# 抖音，  的 达人昵称 不为空的 ，售后状态 不为退款成功的  计算每个达人昵称的订单量 ，按照每个文件 输出

# 时间  达人昵称  订单量  订单提交时间  取前十位
# 针对抖音   "抖音4.xlsx",
#         "抖音1.xlsx",
#         "抖音2.xlsx",
#         "抖音3.xlsx" 四个文件  是达人昵称
# 针对 视频号  带货账号昵称   商品售后 去掉 退款完成   请你写对应的方法 计算


import os
import pandas as pd


def process_douyin_files(directory, output_directory):
    """处理抖音文件：计算达人订单量前10"""
    douyin_files = ["抖音4.xlsx", "抖音1.xlsx", "抖音2.xlsx", "抖音3.xlsx"]

    os.makedirs(output_directory, exist_ok=True)

    for filename in douyin_files:
        file_path = os.path.join(directory, filename)

        if os.path.exists(file_path):
            # 读取文件
            df = pd.read_excel(file_path)

            # 预处理时间格式
            if '订单提交时间' in df.columns:
                df['订单提交时间'] = pd.to_datetime(df['订单提交时间'], errors='coerce')

            # 数据筛选：达人昵称不为空，售后状态不为退款成功
            filtered_df = df[
                (df['达人昵称'].notnull()) &
                (df['售后状态'] != '退款成功')
                ]

            # 分组统计并按订单量排序取前10
            result = (
                filtered_df.groupby('达人昵称')
                .agg(
                    订单量=('达人昵称', 'size'),
                    订单提交时间=('订单提交时间', 'min')
                )
                .reset_index()
                .sort_values('订单量', ascending=False)
                .head(20)
            )

            # 格式化时间列
            result['订单提交时间'] = result['订单提交时间'].dt.strftime('%Y-%m-%d')

            # 添加文件信息
            result['文件'] = filename

            # 调整列顺序
            result = result[['文件', '达人昵称', '订单提交时间', '订单量']]

            # 输出到Excel
            output_path = os.path.join(output_directory, f"统计结果_{filename}")
            result.to_excel(output_path, index=False)

            print(f"已处理: {filename} - 输出前{len(result)}位达人")


def process_video_files(directory, output_directory):
    """处理视频号文件：计算带货账号订单量前10"""
    video_files = ["视频号.xlsx"]

    os.makedirs(output_directory, exist_ok=True)

    for filename in video_files:
        file_path = os.path.join(directory, filename)

        if os.path.exists(file_path):
            # 读取文件
            df = pd.read_excel(file_path)

            # 预处理时间格式
            if '订单下单时间' in df.columns:
                df['订单下单时间'] = pd.to_datetime(df['订单下单时间'], errors='coerce')

            # 数据筛选：带货账号昵称不为空 或者 - ，商品售后不为退款完成
            filtered_df = df[
                (df['带货账号昵称'].notnull()) &
                (df['商品售后'] != '退款完成') &
                (df['带货账号昵称'] !='-')
                ]

            # 分组统计并按订单量排序取前10
            result = (
                filtered_df.groupby('带货账号昵称')
                .agg(
                    订单量=('带货账号昵称', 'size'),
                    订单下单时间=('订单下单时间', 'min')
                )
                .reset_index()
                .sort_values('订单量', ascending=False)
                .head(20)
            )

            # 格式化时间列
            result['订单下单时间'] = result['订单下单时间'].dt.strftime('%Y-%m-%d')

            # 添加文件信息
            result['文件'] = filename

            # 调整列顺序
            result = result[['文件', '带货账号昵称', '订单下单时间', '订单量']]

            # 输出到Excel
            output_path = os.path.join(output_directory, f"统计结果_{filename}")
            result.to_excel(output_path, index=False)

            print(f"已处理: {filename} - 输出前{len(result)}位达人")


if __name__ == "__main__":
    input_directory = r'E:\每日'
    output_directory = r'E:\每日结果'

    # process_douyin_files(input_directory, output_directory)
    process_video_files(input_directory, output_directory)
